//
//  TabBar.swift
//  WeiBo14
//
//  Created by rzj on 16/3/9.
//  Copyright © 2016年 rzj. All rights reserved.
//

import UIKit

class TabBar: UITabBar {

    /**  加号闭包回调*/
    var composeButtonClickCloure: (()->())?
  
    override init(frame: CGRect) {
        super.init(frame: frame)
        
        setUpUI()
        
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    
    private func setUpUI() {
    
        //添加子控件
        addSubview(composeButton)
        
        //导航控制器右侧有黑影 设置UITabBar的背景图片 或者设置导航栏的backTitcolor()
        backgroundImage = UIImage(named: "tabbar_background")
    
    }
    
    //懒加载按钮
    private lazy var composeButton:UIButton = {
    
        let button = UIButton()
        //设置按钮背景
        button.setBackgroundImage(UIImage(named:
            "tabbar_compose_button"), forState: .Normal)
        button.setBackgroundImage(UIImage(named: "tabbar_compose_button_highlighted"),
            forState: .Highlighted)
        //设置按钮图片
        button.setImage(UIImage(named: "tabbar_compose_icon_add"), forState: .Normal)
        button.setImage(UIImage(named: "tabbar_compose_icon_add_highlighted"),
            forState: .Highlighted)
        button.sizeToFit()
        button.addTarget(self, action: "composeButtonOnClick", forControlEvents: .TouchUpInside)
        return button
    }()
    
    //MARK: - 加号点击事件
    //@objc 告诉系统此方法基于运行时机制
    @objc private func composeButtonOnClick() {
    
        print("点击了加号")
        //如果不设置就为nil 不能使用!
        composeButtonClickCloure?()
    
    }
    
    
    //MARK: - 调整子控件的位置
    override func layoutSubviews() {
        //注意重写父类
        super.layoutSubviews()
        
        //每个item的宽度
        let itemW = self.frame.width / 5;
        var index = 0
        
        
        //调整其他按钮的位置
        //遍历子控件
        for value in self.subviews {
            //取出对应的按钮
            if value.isKindOfClass(NSClassFromString("UITabBarButton")!) {
            
            //计算x值 w
            let x = CGFloat(index) * itemW
            
            //设置x，w
            value.frame.size.width = itemW
            value.frame.origin.x = x
            
            //累加索引
            index++
            
            //如果当前索引是2 即将变为3 将现有索引后移一位
            if index == 2 {
                index++
             }

            }

        }
        //设置加号按钮位置 不能直接设置为self.center y值不同 要设置y为tabBar的高度的center
        composeButton.center = CGPoint(x: self.center.x, y: self.frame.height*0.5)
    }
    
    
}
